﻿Imports System.Data.Common

Public Class Equivalencia

    Public ID_EQUIVALENCIA, CANTIDAD, EQUIVALE As Decimal
    Public COD_PRODUCTO, COD_PRODUCTO_1 As String
    Public FECHA_REGISTRO As DateTime

    Public Shared Function Nuevo(ByRef equi As Equivalencia) As Resultado
        Dim conexion As New ConexionBD.ConexionBD()
        Dim oResultado As New Resultado
        oResultado.ExisteError = conexion.Conectar()
        If oResultado.ExisteError Then
            Dim sentencia As String
            Dim ok As Boolean = False

            sentencia = "SP_EQUIVALENCIA_I"

            conexion.ParametroEntrada = New List(Of DbParameter)
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInString(conexion, equi.COD_PRODUCTO, "COD_PRODUCTO"))
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInString(conexion, equi.COD_PRODUCTO_1, "COD_PRODUCTO_1"))
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInDecimal(conexion, equi.CANTIDAD, "CANTIDAD"))
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInDecimal(conexion, equi.EQUIVALE, "EQUIVALE"))

            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamOutChar(conexion, "", "P_ERROR"))
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamOutString(conexion, "", "P_MENSAJE"))

            ok = conexion.EjecutarProcedimiento(sentencia)
            oResultado.ExisteError = conexion.ExisteError
            oResultado.Mensaje = conexion.mensaje
            conexion.Desconectar()
        End If
        Return oResultado
    End Function

    Public Shared Function Actualizar(ByRef equi As Equivalencia) As Resultado
        Dim conexion As New ConexionBD.ConexionBD()
        Dim oResultado As New Resultado
        oResultado.ExisteError = conexion.Conectar()
        If oResultado.ExisteError Then
            Dim sentencia As String
            Dim ok As Boolean = False

            sentencia = "SP_EQUIVALENCIA_U"

            conexion.ParametroEntrada = New List(Of DbParameter)
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInString(conexion, equi.COD_PRODUCTO, "COD_PRODUCTO"))
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInString(conexion, equi.COD_PRODUCTO_1, "COD_PRODUCTO_1"))
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInDecimal(conexion, equi.CANTIDAD, "CANTIDAD"))
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInDecimal(conexion, equi.EQUIVALE, "EQUIVALE"))

            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamOutChar(conexion, "", "P_ERROR"))
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamOutString(conexion, "", "P_MENSAJE"))

            ok = conexion.EjecutarProcedimiento(sentencia)
            oResultado.ExisteError = conexion.ExisteError
            oResultado.Mensaje = conexion.mensaje
            conexion.Desconectar()
        End If
        Return oResultado
    End Function

    Public Shared Function exisEqui(ByRef equi As Equivalencia) As Boolean
        Dim conexion As New ConexionBD.ConexionBD()
        Dim dtConsulta As New DataTable
        If conexion.Conectar() Then
            Dim sentencia As String
            sentencia = "select * from EQUIVALENCIA where COD_PRODUCTO=@COD_PRODUCTO AND COD_PRODUCTO_1=@COD_PRODUCTO_1"
            conexion.ParametroEntrada = New List(Of DbParameter)
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInString(conexion, equi.COD_PRODUCTO, "COD_PRODUCTO"))
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInString(conexion, equi.COD_PRODUCTO_1, "COD_PRODUCTO_1"))
            dtConsulta = conexion.Consulta(sentencia)
            conexion.Desconectar()
        End If

        If dtConsulta.Rows.Count <= 0 Then
            Return False
        Else
            Return True
        End If
    End Function

    Public Shared Function exisEqui(ByRef COD_PRODUCTO As String) As Boolean
        Dim conexion As New ConexionBD.ConexionBD()
        Dim dtConsulta As New DataTable
        If conexion.Conectar() Then
            Dim sentencia As String
            sentencia = "select * from EQUIVALENCIA where COD_PRODUCTO=@COD_PRODUCTO OR COD_PRODUCTO_1=@COD_PRODUCTO_1"
            conexion.ParametroEntrada = New List(Of DbParameter)
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInString(conexion, COD_PRODUCTO, "COD_PRODUCTO"))
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInString(conexion, COD_PRODUCTO, "COD_PRODUCTO_1"))
            dtConsulta = conexion.Consulta(sentencia)
            conexion.Desconectar()
        End If

        If dtConsulta.Rows.Count <= 0 Then
            Return False
        Else
            Return True
        End If
    End Function

    Public Shared Function ConsultarAll() As DataTable
        Dim conexion As New ConexionBD.ConexionBD()
        Dim dtConsulta As New DataTable
        If conexion.Conectar() Then
            Dim sentencia As String
            sentencia = "SELECT E.ID_EQUIVALENCIA, E.COD_PRODUCTO, E.CANTIDAD, E.EQUIVALE," + _
            "P.DESCRIPCION AS DESCRIPCION_1, P.ID_UNIDAD_MEDIDA AS ID_UNIDAD_MEDIDA_1,  E.COD_PRODUCTO_1, P1.DESCRIPCION ," + _
            "P1.ID_UNIDAD_MEDIDA " + _
            "FROM PRODUCTO P1, EQUIVALENCIA E LEFT JOIN PRODUCTO P ON E.COD_PRODUCTO_1 = P.COD_PRODUCTO " + _
            "WHERE(E.COD_PRODUCTO = P1.COD_PRODUCTO)"
            dtConsulta = conexion.Consulta(sentencia)
            conexion.Desconectar()
        End If
        Return dtConsulta
    End Function

    Public Shared Function consxCodProd1CodProd2(ByRef equi As Equivalencia) As DataTable
        Dim conexion As New ConexionBD.ConexionBD()
        Dim dtConsulta As New DataTable
        If conexion.Conectar() Then
            Dim sentencia As String
            sentencia = "select * from EQUIVALENCIA where COD_PRODUCTO=@COD_PRODUCTO OR COD_PRODUCTO_1=@COD_PRODUCTO_1"
            conexion.ParametroEntrada = New List(Of DbParameter)
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInString(conexion, equi.COD_PRODUCTO, "COD_PRODUCTO"))
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInString(conexion, equi.COD_PRODUCTO_1, "COD_PRODUCTO_1"))
            dtConsulta = conexion.Consulta(sentencia)
            conexion.Desconectar()
        End If
        Return dtConsulta
    End Function

    Public Shared Function Eliminar(ByRef equi As Equivalencia) As Resultado
        Dim conexion As New ConexionBD.ConexionBD()
        Dim oResultado As New Resultado
        oResultado.ExisteError = conexion.Conectar()
        If oResultado.ExisteError Then
            Dim sentencia As String
            Dim ok As Boolean = False

            sentencia = "SP_EQUIVALENCIA_D"

            conexion.ParametroEntrada = New List(Of DbParameter)
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInString(conexion, equi.COD_PRODUCTO, "COD_PRODUCTO"))
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInString(conexion, equi.COD_PRODUCTO_1, "COD_PRODUCTO_1"))
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInDecimal(conexion, equi.CANTIDAD, "CANTIDAD"))
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInDecimal(conexion, equi.EQUIVALE, "EQUIVALE"))

            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamOutChar(conexion, "", "P_ERROR"))
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamOutString(conexion, "", "P_MENSAJE"))

            ok = conexion.EjecutarProcedimiento(sentencia)
            oResultado.ExisteError = conexion.ExisteError
            oResultado.Mensaje = conexion.mensaje
            conexion.Desconectar()
        End If
        Return oResultado
    End Function

End Class
